package com.nbsaas.boot.wms.api.domain.service;

import com.nbsaas.boot.wms.api.domain.request.ProductAllocationQueryRequest;
import com.nbsaas.boot.wms.api.domain.response.ProductAllocationResponse;
import com.nbsaas.boot.wms.api.domain.response.ShopAllocationSummaryResponse;

import java.util.List;

/**
 * 商品配货服务接口
 */
public interface ProductAllocationService {

    /**
     * 查询商品在指定店铺的配货情况
     * @param request 查询请求
     * @return 配货情况列表
     */
    List<ProductAllocationResponse> queryProductAllocation(ProductAllocationQueryRequest request);

    /**
     * 查询商品在多个店铺的配货汇总情况
     * 如果某个店铺没有配货，返回配货数量为0的记录
     * @param productId 商品ID
     * @param shopIds 店铺ID列表
     * @return 店铺配货汇总列表
     */
    List<ShopAllocationSummaryResponse> getProductAllocationSummaryByShops(Long productId, List<Long> shopIds);

    /**
     * 查询商品在指定店铺的配货数量
     * 如果该店铺没有配货，返回0
     * @param productId 商品ID
     * @param shopId 店铺ID
     * @return 配货数量
     */
    Integer getProductAllocationQuantityByShop(Long productId, Long shopId);

    /**
     * 查询商品在指定店铺的可用配货数量
     * @param productId 商品ID
     * @param shopId 店铺ID
     * @return 可用配货数量
     */
    Integer getAvailableAllocationQuantityByShop(Long productId, Long shopId);

    /**
     * 查询商品在指定店铺的配货状态
     * @param productId 商品ID
     * @param shopId 店铺ID
     * @return 配货状态
     */
    String getProductAllocationStatusByShop(Long productId, Long shopId);
} 